package cn.rkylin.oms.order.dao;

import cn.rkylin.oms.order.vo.OrderSkuVO;

import java.math.BigDecimal;
import java.util.List;
import java.util.Map;

public interface IOrderSkuDAO {

    /**
     * 创建
     *
     * @param Order
     * @throws Exception
     */
    public int insert(OrderSkuVO orderSkuVO) throws Exception;

    public int update(OrderSkuVO orderSkuVO) throws Exception;

    public int updateByCondition(OrderSkuVO orderSkuVO) throws Exception;

    public List<OrderSkuVO> getOrderSkuList(OrderSkuVO orderSkuVO) throws Exception;

    /**
     * getOrderSkuList:根据退款单ID获取订单商品明细. <br/>
     *
     * @param refundId
     * @return
     * @throws Exception
     * @author zhanghao
     */
    public List<OrderSkuVO> getOrderSkuList(String refundId) throws Exception;

    /**
     * 退货单加载 订单商品以及订单关联补发单的商品
     *
     * @param orderId
     * @return
     * @throws Exception
     */
    public List<OrderSkuVO> getOrderSkuAndResendSkuByOrderId(String orderId) throws Exception;

    /**
     * 查询订单未分派的商品
     *
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    public List<OrderSkuVO> getOrderSkuListForNotAllot(OrderSkuVO orderSkuVO) throws Exception;

    /**
     * 校验待审核状态下的订单平台规格
     *
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    public List<OrderSkuVO> getOrderSkuWaitVerifyList(OrderSkuVO orderSkuVO) throws Exception;

    /**
     * 平台商品关联系统商品同时更新待审核订单商品的系统商品
     *
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    public int updateOrderSkuForEcSku(OrderSkuVO orderSkuVO) throws Exception;

    /**
     * 获取系统订单商品明细
     *
     * @param orderSkuId
     * @return
     * @throws Exception
     */
    public OrderSkuVO selectByPrimaryKeyOrderSku(String orderSkuId) throws Exception;

    /**
     * replaceByCondition:替换订单商品. <br/>
     *
     * @author zhanghao
     * @param orderSkuVO
     * @return
     * @throws Exception
     */
    int replaceByCondition(OrderSkuVO orderSkuVO) throws Exception;

    public List<OrderSkuVO> selectByOrderIdSysOrderSkuQty(String orderId) throws Exception;
}
